﻿using System.Threading.Tasks;

namespace RotovapPlatform.Domain.Services.DeviceParameters
{
	/// <summary>
	/// 设备参数领域服务接口
	/// </summary>
	public interface IDeviceParameterDomainService
	{
		/// <summary>
		/// 初始化设备参数
		/// </summary>
		Task InitializeAsync();

		/// <summary>
		/// 获取工艺参数范围
		/// </summary>
		/// <param name="parameterName">参数名称</param>
		/// <returns>参数范围（最小值、最大值、单位）</returns>
		Task<(double Min, double Max, string Unit)> GetProcessParameterRangeAsync(string parameterName);

		/// <summary>
		/// 获取油浴温度范围
		/// </summary>
		Task<(double Min, double Max, string Unit)> GetOilTemperatureRangeAsync();

		/// <summary>
		/// 获取旋蒸转速范围
		/// </summary>
		Task<(double Min, double Max, string Unit)> GetRotarySpeedRangeAsync();

		/// <summary>
		/// 获取阶梯温度范围
		/// </summary>
		Task<(double Min, double Max, string Unit)> GetStepTemperatureRangeAsync();

		/// <summary>
		/// 获取阶梯稳定时间范围
		/// </summary>
		Task<(double Min, double Max, string Unit)> GetStepStableTimeRangeAsync();

		/// <summary>
		/// 获取旋蒸时间范围
		/// </summary>
		Task<(double Min, double Max, string Unit)> GetRotaryTimeRangeAsync();

		/// <summary>
		/// 获取冷凝温度范围
		/// </summary>
		Task<(double Min, double Max, string Unit)> GetCondensationTemperatureRangeAsync();

		/// <summary>
		/// 获取真空度范围
		/// </summary>
		Task<(double Min, double Max, string Unit)> GetVacuumRangeAsync();

		/// <summary>
		/// 获取清洗体积范围
		/// </summary>
		Task<(double Min, double Max, string Unit)> GetCleaningVolumeRangeAsync();

		/// <summary>
		/// 获取清洗速度范围
		/// </summary>
		Task<(double Min, double Max, string Unit)> GetCleaningSpeedRangeAsync();

		/// <summary>
		/// 获取清洗时间范围
		/// </summary>
		Task<(double Min, double Max, string Unit)> GetCleaningTimeRangeAsync();
	}
}